﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using AI.Fuzzy.Library;

namespace TAI
{
    public partial class Examen : System.Web.UI.Page
    {
        XML.ManejadorXML manejador;
        static MotorInferencia motor;
        public bool stop = false;

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!Page.IsPostBack)
            {
                Session["t1"] = DateTime.Now;
                motor = new MotorInferencia();
                Session["motor"] = motor;
                cargar();
                motor.hechos.agregar(5);

            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if (Page.IsPostBack)
            {
                try
                {

                    DateTime t1 = (DateTime)Session["t1"];
                    TimeSpan temp = DateTime.Now - t1;
                    double tiempo = Convert.ToDouble(temp.Seconds);
                    double desempeno = double.Parse(cb1.SelectedItem.Value);
                    motor = (MotorInferencia)Session["motor"];
                    motor.agregar(desempeno, tiempo);
                    cb1.ClearSelection();

                    cargar();
                    if (stop)
                    {
                        cb1.Visible = false;
                        Button1.Visible = false;
                        Label2.Visible = false;
                        Label1.Visible = false;
                        

                        l1.Text = "Usted ha concluído el examen! \n\n        Calificación: "+motor.nivelActual;
                    }



                }
                catch (NullReferenceException exc)
                {
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "TAI", "alert('Por favor seleccione una opción antes de continuar')", true);
                }



            }
            else
            {
                Session["t1"] = DateTime.Now;
                Response.Redirect(Request.RawUrl);
            }
        }

        void cargar()
        {
            motor = (MotorInferencia)Session["motor"];
            manejador = (XML.ManejadorXML)Session["admin"];
            int n = motor.getNivel();
            if (!motor.condicionParada())
            {
                XML.Pregunta preg = manejador.getPregunta(n);

                if (preg != null)
                {

                    l1.Text = preg.enunciado;

                    cb1.Items[0].Text = preg.a;
                    cb1.Items[0].Value = preg.notaA.ToString();
                    cb1.Items[1].Text = preg.b;
                    cb1.Items[1].Value = preg.notaB.ToString();
                    cb1.Items[2].Text = preg.c;
                    cb1.Items[2].Value = preg.notaC.ToString();
                    cb1.Items[3].Text = preg.d;
                    cb1.Items[3].Value = preg.notaD.ToString();

                    for (int i = 0; i < cb1.Items.Count; i++)
                    {
                        if (cb1.Items[i].Value == "1")
                        {
                            Label1.Text = "Nivel: " + n + " - Respuesta Correcta: " + cb1.Items[i].Text;
                        }
                    }

                    Label2.Text = "Contador: " + motor.contador + " - Lógica Difusa: " + motor.nivel;

                    if (!preg.ruta.Equals("null"))
                    {
                        Image1.ImageUrl = preg.ruta;
                        Image1.Visible = true;
                    }
                    else
                    {
                        Image1.Visible = false;
                    }
                }
            }
            else
            {
                stop = true;

            }

            Session["t1"] = DateTime.Now;
        }
    }
}